package com.example.user.mapper;

import com.example.model.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 用户数据访问接口
 */
@Mapper
public interface UserMapper {

    /**
     * 根据ID查询用户
     * @param id 用户ID
     * @return 用户信息
     */
    User selectById(Integer id);

    /**
     * 根据用户名查询用户
     * @param name 用户名
     * @return 用户信息
     */
    User selectByName(String name);

    /**
     * 根据学号查询用户
     * @param studentId 学号
     * @return 用户信息
     */
    User selectByStudentId(String studentId);

    /**
     * 根据教师工资号查询用户
     * @param teacherId 教师工资号
     * @return 用户信息
     */
    User selectByTeacherId(String teacherId);

    /**
     * 根据用户名或学号或教师工资号查询用户
     * @param name 用户名
     * @param studentId 学号
     * @param teacherId 教师工资号
     * @return 用户信息
     */
    User selectByNameOrStudentIdOrTeacherId(@Param("name") String name,
                                            @Param("studentId") String studentId,
                                            @Param("teacherId") String teacherId);

    /**
     * 更新用户密码
     * @param id 用户ID
     * @param password 新密码（已加密）
     * @return 更新结果
     */
    int updatePassword(@Param("id") Integer id, @Param("password") String password);

    /**
     * 插入新用户
     * @param user 用户信息
     * @return 插入结果
     */
    int insert(User user);

    /**
     * 更新用户信息
     * @param user 用户信息
     * @return 更新结果
     */
    int updateById(User user);
}